package pe.edu.upc.matrix.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import pe.edu.upc.matrix.modelo.BMensaje;
import pe.edu.upc.matrix.util.UConexionBD;
import pe.edu.upc.matrix.excepcion.DAOExcepcion;



public class DMensaje extends BaseDAO {

@SuppressWarnings("resource")
public BMensaje insertar(BMensaje mensaje) throws DAOExcepcion {
		String query = "insert into tb_mensajes(TXT_PREGUNTA,FE_PREGUNTA,ID_PERSONA,ID_PUBLICACION) values (?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = UConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, mensaje.getTxtPregunta());
			stmt.setDate(2, mensaje.getFePregunta());
			stmt.setInt(3, mensaje.getIdPersona());
			stmt.setInt(4, mensaje.getIdPublicacion());
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se puede ingresar la pregunta");
			}
			// Obtener el ultimo id
			int id = 0;
			query = "select last_insert_id()";
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			if (rs.next()) {
				id = rs.getInt(1);
			}
			mensaje.setIdMensaje(id);

		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return mensaje;
	}


public BMensaje actualizar(BMensaje mensaje) throws DAOExcepcion {
	String query = "update tb_mensajes set TXT_RESPUESTA=?,FE_RESPUESTA=? where ID_MENSAJE=?";
	Connection con = null;
	PreparedStatement stmt = null;
	try {
		con = UConexionBD.obtenerConexion();
		stmt = con.prepareStatement(query);
		stmt.setString(1, mensaje.getTxtRespuesta());
		stmt.setDate(2, mensaje.getFeRespuesta());
		int i = stmt.executeUpdate();
		if (i != 1) {
			throw new SQLException("No se pudo actualizar");
		}
	} catch (SQLException e) {
		System.err.println(e.getMessage());
		throw new DAOExcepcion(e.getMessage());
	} finally {
		this.cerrarStatement(stmt);
		this.cerrarConexion(con);
	}
	return mensaje;
}


public BMensaje obtener(int codMensaje) throws DAOExcepcion {
	BMensaje mensaje = new BMensaje();
	Connection con = null;
	PreparedStatement stmt = null;
	ResultSet rs = null;
	try {
		String query = "select ID_MENSAJE, TXT_PREGUNTA, TXT_RESPUESTA, FE_PREGUNTA, FE_RESPUESTA, ID_PERSONA, ID_PUBLICACION from tb_mensaje where ID_MENSAJE=?";
		con = UConexionBD.obtenerConexion();
		stmt = con.prepareStatement(query);
		stmt.setInt(1, codMensaje);
		rs = stmt.executeQuery();
		if (rs.next()) {
			mensaje.setIdMensaje(rs.getInt(1));
			mensaje.setTxtPregunta(rs.getString(2));
			mensaje.setTxtRespuesta(rs.getString(3));
			mensaje.setFePregunta(rs.getDate(4));
			mensaje.setFeRespuesta(rs.getDate(5));
			mensaje.setIdPersona(rs.getInt(6));
			mensaje.setIdPublicacion(rs.getInt(7));
		}
	} catch (SQLException e) {
		System.err.println(e.getMessage());
		throw new DAOExcepcion(e.getMessage());
	} finally {
		this.cerrarResultSet(rs);
		this.cerrarStatement(stmt);
		this.cerrarConexion(con);
	}
	return mensaje;
}

public void eliminar(int codMensaje) throws DAOExcepcion {
	String query = "delete from tb_mensajes WHERE ID_MENSAJE=?";
	Connection con = null;
	PreparedStatement stmt = null;
	try {
		con = UConexionBD.obtenerConexion();
		stmt = con.prepareStatement(query);
		stmt.setInt(1, codMensaje);
		int i = stmt.executeUpdate();
		if (i != 1) {
			throw new SQLException("No se pudo eliminar");
		}
	} catch (SQLException e) {
		System.err.println(e.getMessage());
		throw new DAOExcepcion(e.getMessage());
	} finally {
		this.cerrarStatement(stmt);
		this.cerrarConexion(con);
	}
}
}

